package com.ziyun.erp.modules.promotion.entity;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.ziyun.erp.common.e.promotion.PolicyTypeEnum;
import com.ziyun.erp.common.utils.EnumUtil;
import io.renren.common.validator.group.AddGroup;
import io.renren.common.validator.group.UpdateGroup;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 促销优惠配置信息
 * 
 * @author jiangli
 * @email 
 * @date 2018-09-17 09:34:00
 * @NotEmpty 用在集合类上面
 * @NotBlank 用在String上面
 * @NotNull 用在基本类型上
 */
@TableName("promotion_policy_config")
public class PromotionPolicyConfigEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 
	 */
	@TableId
	private Integer id;
	/**
	 * 促销方式（促销/优惠券/支付券）
	 */
    @NotBlank(message = "促销方式不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String policyType;
	/**
	 * 活动名称
	 */
	@NotBlank(message = "活动名称不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String name;
	/**
	 * 活动详细描述
	 */
    @NotBlank(message = "活动详细描述不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String describes;
	/**
	 * 活动范围类型
	 */
    @NotBlank(message = "活动范围类型不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String scopeType;
	/**
	 * 店铺Id 0表示全站
	 */
	private Integer shopId;
	/**
	 * 参与范围值 id逗号分隔
	 */
    @NotBlank(message = "参与范围值不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String scopeValue;
	/**
	 * 排除参与活动的商品范围
	 */
	private String debarScope;
	/**
	 * 活动开始展示时间
	 */
	private Date showDate;
	/**
	 * 活动开始时间
	 */
	private Date beginDate;
	/**
	 * 活动结束时间
	 */
	private Date endDate;
	/**
	 * 优惠券有效天数
	 */
    @NotNull(message = "优惠券有效天数不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private Integer validDays;
	/**
	 * 延迟使用天数（多少天后开始有效）
	 */
    @NotNull(message = "延迟使用天数不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private Integer delayedUseDays;
	/**
	 * 特价产品是否参与优惠券:0-不参与 1-参与
	 */
	private Boolean specialPartake;
	/**
	 * 适用平台 all
	 */
	private String purview;
	/**
	 * 用户类型限制
	 */
	private String userType;
	/**
	 * 用户等级阶梯限制
	 */
	private String userLevelLimitTimes;
	/**
	 * 每订单参与次数限制
	 */
	private Integer orderLimitTimes;
	/**
	 * 用户参与次数限制
	 */
	private Integer userLimitTimes;
	/**
	 * 总数参与次数限制
	 */
	private Integer allLimitTimes;
	/**
	 * 优惠条件类型 (none,fullmoney,fullquantity,groupmustone)
	 */
    @NotBlank(message = "优惠条件类型不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String conditionType;
	/**
	 * 条件参数
	 */
	private String conditionParam;
	/**
	 * 优惠结果类型 'fullreduce','franking','fullgive','sale'
	 */
    @NotBlank(message = "优惠结果类型不能为空",groups = {AddGroup.class,UpdateGroup.class})
	private String resultType;
	/**
	 * 优惠结果参数
	 */
	private String resultParam;
	/**
	 * '优惠可以使用平台 ‘0’ 紫云网、pop平台，‘1’ 紫云网，‘2’ pop平台'
	 */
	private Integer stageType;
	/**
	 * 活动优先级
	 */
	private Integer level;
	/**
	 * 失效:0-不失效 1-失效
	 */
	private Boolean disabled;
	/**
	 * 操作人
	 */
	private String operation;
	/**
	 * 
	 */
	private Date createTime;
	/**
	 * 
	 */
	private Date updateTime;

	/**
	 * 设置：
	 */
	public void setId(Integer id) {
		this.id = id;
	}
	/**
	 * 获取：
	 */
	public Integer getId() {
		return id;
	}
	/**
	 * 设置：促销方式（促销/优惠券/支付券）
	 */
	public void setPolicyType(String policyType) {
		this.policyType = policyType;
	}
	/**
	 * 获取：促销方式（促销/优惠券/支付券）
	 */
	public String getPolicyType() {

		return policyType;
		//return EnumUtil.getEnumByCode(PolicyTypeEnum.class,policyType).toDescribe();
	}
	/**
	 * 设置：活动名称
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * 获取：活动名称
	 */
	public String getName() {
		return name;
	}
	/**
	 * 设置：活动详细描述
	 */
	public void setDescribes(String describes) {
		this.describes = describes;
	}
	/**
	 * 获取：活动详细描述
	 */
	public String getDescribes() {
		return describes;
	}
	/**
	 * 设置：活动范围类型
	 */
	public void setScopeType(String scopeType) {
		this.scopeType = scopeType;
	}
	/**
	 * 获取：活动范围类型
	 */
	public String getScopeType() {

		return scopeType;
		//return EnumUtil.getEnumByCode(ScopeTypeEnum.class,scopeType).toDescribe();
	}
	/**
	 * 设置：店铺Id 0表示全站
	 */
	public void setShopId(Integer shopId) {
		this.shopId = shopId;
	}
	/**
	 * 获取：店铺Id 0表示全站
	 */
	public Integer getShopId() {
		return shopId;
	}
	/**
	 * 设置：参与范围值 id逗号分隔
	 */
	public void setScopeValue(String scopeValue) {
		this.scopeValue = scopeValue;
	}
	/**
	 * 获取：参与范围值 id逗号分隔
	 */
	public String getScopeValue() {
		return scopeValue;
	}
	/**
	 * 设置：排除参与活动的商品范围 { scopeType : id,id}
	 */
	public void setDebarScope(String debarScope) {
		this.debarScope = debarScope;
	}
	/**
	 * 获取：排除参与活动的商品范围 { scopeType : id,id}
	 */
	public String getDebarScope() {
		return debarScope;
	}
	/**
	 * 设置：活动开始展示时间
	 */
	public void setShowDate(Date showDate) {
		this.showDate = showDate;
	}
	/**
	 * 获取：活动开始展示时间
	 */
	public Date getShowDate() {
		return showDate;
	}
	/**
	 * 设置：活动开始时间
	 */
	public void setBeginDate(Date beginDate) {
		this.beginDate = beginDate;
	}
	/**
	 * 获取：活动开始时间
	 */
	public Date getBeginDate() {
		return beginDate;
	}
	/**
	 * 设置：活动结束时间
	 */
	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}
	/**
	 * 获取：活动结束时间
	 */
	public Date getEndDate() {
		return endDate;
	}
	/**
	 * 设置：优惠券有效天数
	 */
	public void setValidDays(Integer validDays) {
		this.validDays = validDays;
	}
	/**
	 * 获取：优惠券有效天数
	 */
	public Integer getValidDays() {
		return validDays;
	}
	/**
	 * 设置：延迟使用天数（多少天后开始有效）
	 */
	public void setDelayedUseDays(Integer delayedUseDays) {
		this.delayedUseDays = delayedUseDays;
	}
	/**
	 * 获取：延迟使用天数（多少天后开始有效）
	 */
	public Integer getDelayedUseDays() {
		return delayedUseDays;
	}
	/**
	 * 设置：特价产品是否参与优惠券:0-不参与 1-参与
	 */
	public void setSpecialPartake(Boolean specialPartake) {
		this.specialPartake = specialPartake;
	}
	/**
	 * 获取：特价产品是否参与优惠券:0-不参与 1-参与
	 */
	public Boolean getSpecialPartake() {
		return specialPartake;
	}
	/**
	 * 设置：适用平台 all
	 */
	public void setPurview(String purview) {
		this.purview = purview;
	}
	/**
	 * 获取：适用平台 all
	 */
	public String getPurview() {
		return purview;
	}
	/**
	 * 设置：用户类型限制
	 */
	public void setUserType(String userType) {
		this.userType = userType;
	}
	/**
	 * 获取：用户类型限制
	 */
	public String getUserType() {
		return userType;
	}
	/**
	 * 设置：用户等级阶梯限制
	 */
	public void setUserLevelLimitTimes(String userLevelLimitTimes) {
		this.userLevelLimitTimes = userLevelLimitTimes;
	}
	/**
	 * 获取：用户等级阶梯限制
	 */
	public String getUserLevelLimitTimes() {
		return userLevelLimitTimes;
	}
	/**
	 * 设置：每订单参与次数限制
	 */
	public void setOrderLimitTimes(Integer orderLimitTimes) {
		this.orderLimitTimes = orderLimitTimes;
	}
	/**
	 * 获取：每订单参与次数限制
	 */
	public Integer getOrderLimitTimes() {
		return orderLimitTimes;
	}
	/**
	 * 设置：用户参与次数限制
	 */
	public void setUserLimitTimes(Integer userLimitTimes) {
		this.userLimitTimes = userLimitTimes;
	}
	/**
	 * 获取：用户参与次数限制
	 */
	public Integer getUserLimitTimes() {
		return userLimitTimes;
	}
	/**
	 * 设置：总数参与次数限制
	 */
	public void setAllLimitTimes(Integer allLimitTimes) {
		this.allLimitTimes = allLimitTimes;
	}
	/**
	 * 获取：总数参与次数限制
	 */
	public Integer getAllLimitTimes() {
		return allLimitTimes;
	}
	/**
	 * 设置：优惠条件类型 (none,fullmoney,fullquantity,groupmustone)
	 */
	public void setConditionType(String conditionType) {
		this.conditionType = conditionType;
	}
	/**
	 * 获取：优惠条件类型 (none,fullmoney,fullquantity,groupmustone)
	 */
	public String getConditionType() {
		return conditionType;
	}
	/**
	 * 设置：条件参数
	 */
	public void setConditionParam(String conditionParam) {
		this.conditionParam = conditionParam;
	}
	/**
	 * 获取：条件参数
	 */
	public String getConditionParam() {
		return conditionParam;
	}
	/**
	 * 设置：优惠结果类型 'fullreduce','franking','fullgive','sale'
	 */
	public void setResultType(String resultType) {
		this.resultType = resultType;
	}
	/**
	 * 获取：优惠结果类型 'fullreduce','franking','fullgive','sale'
	 */
	public String getResultType() {
		return resultType;
	}
	/**
	 * 设置：优惠结果参数
	 */
	public void setResultParam(String resultParam) {
		this.resultParam = resultParam;
	}
	/**
	 * 获取：优惠结果参数
	 */
	public String getResultParam() {
		return resultParam;
	}
	/**
	 * 设置：'优惠可以使用平台 ‘0’ 紫云网、pop平台，‘1’ 紫云网，‘2’ pop平台'
	 */
	public void setStageType(Integer stageType) {
		this.stageType = stageType;
	}
	/**
	 * 获取：'优惠可以使用平台 ‘0’ 紫云网、pop平台，‘1’ 紫云网，‘2’ pop平台'
	 */
	public Integer getStageType() {
		return stageType;
	}
	/**
	 * 设置：活动优先级
	 */
	public void setLevel(Integer level) {
		this.level = level;
	}
	/**
	 * 获取：活动优先级
	 */
	public Integer getLevel() {
		return level;
	}
	/**
	 * 设置：失效:0-不失效 1-失效
	 */
	public void setDisabled(Boolean disabled) {
		this.disabled = disabled;
	}
	/**
	 * 获取：失效:0-不失效 1-失效
	 */
	public Boolean getDisabled() {
		return disabled;
	}
	/**
	 * 设置：操作人
	 */
	public void setOperation(String operation) {
		this.operation = operation;
	}
	/**
	 * 获取：操作人
	 */
	public String getOperation() {
		return operation;
	}
	/**
	 * 设置：
	 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	/**
	 * 获取：
	 */
	public Date getCreateTime() {
		return createTime;
	}
	/**
	 * 设置：
	 */
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	/**
	 * 获取：
	 */
	public Date getUpdateTime() {
		return updateTime;
	}
}
